package com.goodsogood.union.auth.sync.util;

/**
 * 方法名：com.liyantech.util.TradeUnions
 * 创建日期： 2016/5/19 15:19
 * 创建者：wang.zhaoliang
 * 功能描述：
 */
public class CasRestletUtil {

//    public static String getTicket(final String server, final String username, final String password,
//                                   final String service) {
//        notNull(server, "server must not be null");
//        notNull(username, "username must not be null");
//        notNull(password, "password must not be null");
//        notNull(service, "service must not be null");
//
//        return getServiceTicket(server, getTicketGrantingTicket(server, username, password), service);
//    }
//
//    /**
//     * 取得ST
//     * @param server
//     * @param ticketGrantingTicket
//     * @param service
//     */
//    public static String getServiceTicket(final String server, final String ticketGrantingTicket, final String service) {
//        if (ticketGrantingTicket == null)
//            return null;
//       // String ticketGrantingTicket2 =  "TGT-11-Wi6GKa3N1eBbjUTILcF9Bc36YQrQNbD7ysbpsefehMAY7bgHuW-cas01.example.org";
//        final HttpClient client = new HttpClient();
//
//        final PostMethod post = new PostMethod(server + "/" + ticketGrantingTicket);
//
//        post.setRequestBody(new NameValuePair[] { new NameValuePair("service", service) });
//        System.out.println("**********"+server + "/" + ticketGrantingTicket+"?service="+service);
//        try {
//            client.executeMethod(post);
//
//            final String response = post.getResponseBodyAsString();
//
//            switch (post.getStatusCode()) {
//                case 200:
//                    return response;
//
//                default:
//                    warning("Invalid response code (" + post.getStatusCode() + ") from CAS server!");
//                    info("Response (1k): " + response.substring(0, Math.min(1024, response.length())));
//                    break;
//            }
//        }
//
//        catch (final IOException e) {
//            warning(e.getMessage());
//        }
//
//        finally {
//            post.releaseConnection();
//        }
//
//        return null;
//    }
//
//    /**
//     * @param server
//     * @param username
//     * @param password
//     */
//    private static String getTicketGrantingTicket(final String server, final String username, final String password) {
//        final HttpClient client = new HttpClient();
//
//        final PostMethod post = new PostMethod(server);
//
//        post.setRequestBody(new NameValuePair[] { new NameValuePair("username", username),
//                new NameValuePair("password", password) });
//        post.getParams().setContentCharset("UTF-8");
//        try {
//
//            client.executeMethod(post);
//
//            final String response = post.getResponseBodyAsString();
//            info("TGT="+response);
//            switch (post.getStatusCode()) {
//                case 201: {
//                    final Matcher matcher = Pattern.compile(".*action=\".*/(.*?)\".*").matcher(response);
//
//                    if (matcher.matches())
//                        return matcher.group(1);
//
//                    warning("Successful ticket granting request, but no ticket found!");
//                    info("Response (1k): " + response.substring(0, Math.min(1024, response.length())));
//                    break;
//                }
//
//                default:
//                    warning("Invalid response code (" + post.getStatusCode() + ") from CAS server!");
//                    info("Response (1k): " + response.substring(0, Math.min(1024, response.length())));
//                    break;
//            }
//        }
//
//        catch (final IOException e) {
//            warning(e.getMessage());
//        }
//
//        finally {
//            post.releaseConnection();
//        }
//
//        return null;
//    }
//
//    public static String ticketValidate(String serverValidate, String serviceTicket, String service) {
//      //  notNull(serviceTicket, "paramter 'serviceTicket' is not null");
//        notNull(service, "paramter 'service' is not null");
//        if(serverValidate==null){
//            return "";
//        }
//        final HttpClient client = new HttpClient();
//        GetMethod post = null;
//
//        try {
//            post = new GetMethod(serverValidate+"?"+"ticket="+serviceTicket+"&service="+ URLEncoder.encode(service, "UTF-8"));
//            client.executeMethod(post);
//
//            final String response = post.getResponseBodyAsString();
//            info(response);
//            switch (post.getStatusCode()) {
//                case 200: {
//                    info("成功取得用户数据");
//                }
//                default: {
//
//                }
//            }
//            return response;
//        } catch (Exception e) {
//            warning(e.getMessage());
//        } finally {
//            //释放资源
//            post.releaseConnection();
//        }
//
//        return "";
//
//    }
//
//    private static void notNull(final Object object, final String message) {
//        if (object == null)
//            throw new IllegalArgumentException(message);
//    }
//
//    public static String restletLogin(HashMap<String,String> map) {
//        String proxyValidate=map.get("proxyValidate");
//        String server=map.get("server");
//        String username=map.get("username");
//        String password=map.get("password");
//        String service=map.get("service");
//        String tgt= getTicket(server, username, password, service);
//        ticketValidate(proxyValidate,tgt, service);
//        return tgt;
//    }
//
//    public static void main(final String[] args) throws Exception {
//
//
//    }
//
//    /**
//     * 创建者：  wang.zhaoliang
//     * 功能描述：获取userid
//     * 创建日期：2016/6/15 16:45
//     */
//    private static HashMap<String,Object> parserXml(String xml) {
//        HashMap<String,Object> user=new HashMap<String,Object>();
//        if(xml.indexOf("<cas:userId>")!=-1){
//            String[] str = xml.split("<cas:userId>");
//            if(str.length>0){
//                user.put("userId", str[1].split("</cas:userId>")[0]) ;
//            }
//            str = xml.split("<cas:user>");
//            if(str.length>0){
//                user.put("account",  URLDecoder.decode(str[1].split("</cas:user>")[0]));
//            }
//        }else{
//            user.put("userId","");
//            user.put("account","");
//        }
//        return user;
//    }
//
//    private static void warning(String msg) {
//        System.out.println(msg);
//    }
//
//    private static void info(String msg) {
//        System.out.println(msg);
//    }

}
